package com.wzdigit.wms.basic.domain.basic;

import java.math.BigDecimal;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.wzdigit.framework.orm.model.BasicDomain;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

/**
 * 货品控制
 * 
 * @author yangdongjie
 * @Sku.java
 * @2021年1月20日下午4:52:59
 */
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("WMS_SKU_CTRL")
@KeySequence(value = "WMS_SKU_CTRL_SEQ", clazz = Integer.class)
public class SkuCtrl extends BasicDomain {

	private static final long serialVersionUID = -2262455131162037967L;

	@TableId(value = "SKU_CTRL_ID", type = IdType.INPUT)
	private Integer skuCtrlId;

	/** SKU_ID */
	@TableField("SKU_ID")
	private Integer skuId;

	/** 收货流程可用 */
	@TableField("ALLOW_RCV")
	private Integer allowRcv;

	/** 发货流程可用。 */
	@TableField("ALLOW_SHIP")
	private Integer allowShip;

	/**
	 * 缺省装箱类型 － 默认的装箱组类型代码。下拉列表中的装箱类型代码，在基础设置的“包装规格”功能中进行设置。
	 */
	@TableField("DEFAULT_CARTON_ID")
	private String defaultCartonId;

	/** 该客户产品常用的包装规则，将自动作为此货主名下产品的缺省包装选择 */
	@TableField("DEFAULT_PACK_RULE")
	private String defaultPackRule;

	/** 缺省上架规则 － 下拉列表选择上架规则，将作为产品的缺省默认上架规则。 */
	@TableField("DEFAULT_PUTAWAY_RULE")
	private String defaultPutawayRule;

	/**
	 * 库位指定方式 － 默认的系统计算上架库位的时间节点。系统提供人工指定库位、收货 时计算库位、上架时计算库位 3
	 * 个选项。具体以产品档案中的设置为准。 ? 人工指定即不进行系统指导的上架操作，即使收货到过渡库位同样不会触发上架 任务； ?
	 * 希望系统提供上架指导时，一般要选择收货时计算库位； ? 上架时计算库位，仅应用于 RF 操作中，在上架操作时，临时计算建议目标库位。
	 */
	@TableField("RESERVE_CODE")
	private Integer reserveCode;

	/**
	 * 缺省库存周转规则－ 默认的库存周转规则，具体参考业务规则设置。将作为产品的缺省库存周转规则。
	 */
	@TableField("ROTATION_RULE")
	private String rotationRule;

	/**
	 * 缺省预分配规则 － 默认的预分配规则，具体参考业务规则设置。将作为产品的缺省预分配规则。
	 */
	@TableField("DEFAULT_PREALLOC_RULE")
	private String defaultPreallocRule;

	/** 缺省分配规则 － 默认的分配规则，具体参考业务规则设置。将作为产品的缺省分配规则。 */
	@TableField("DEFAULT_ALLOC_RULE")
	private String defaultAllocRule;

	/** 缺省补货规则 － 补货操作中，如需要系统执行动态补货，自行查找拣货库位时系统执行的补货库位计算逻辑规则。 */
	@TableField("DEFAULT_REPLENISH_RULE")
	private String defaultReplenishRule;

	/**
	 * 缺省质检规则 － 默认的质检规则，具体参考业务规则设置。将作为产品的缺省质检规则。
	 */
	@TableField("DEFAULT_QC_RULE")
	private String defaultQcRule;

	/** 体积重量计算方式 － 该货主的费率计算时提取计算依据的方法，系统提供录入整票单证总量、按产品手工录入、按产品自动计算，3 种计算代码。 */
	@TableField("CALCULATE_CODE")
	private String calculateCode;

	/** 结算方 － 客户默认的结算企业。如未设置，则视同结算方为本客户。 */
	@TableField("BILLTO")
	private String billto;

	/** 承运人 － 客户默认的承运企业。 */
	@TableField("CARRIER")
	private String carrier;

	/**
	 * 单证前缀－ 进行文件处理时，编号的前缀。
	 */
	@TableField("DOC_PREFIX")
	private String docPrefix;

	/** 入库标签－ 打印收货标签时，引用的标签格式文件名称。 */
	@TableField("INBOUND_LABEL")
	private String inboundLabel;

	/** 出库标签－ 打印出货标签时，引用的标签格式文件名称。 */
	@TableField("OUTBOUND_LABEL")
	private String outboundLabel;

	/** 业务担当 － 该货主在仓库内对应的负责人员。 */
	@TableField("FOLLOW_UP")
	private String followUp;

	/** 币种 */
	@TableField("CURRENCY")
	private String currency;

	/**
	 * 税号 － 客户的税号
	 */
	@TableField("TAX_NO")
	private String taxNo;

	/**
	 * 银行账号 － 客户银行账号
	 */
	@TableField("BANK_ACCOUNT")
	private String bankAccount;

	/** 缺省收货单位－ 产品收货时常用的包装级别单位。 */
	@TableField("DEFAULT_RCV_UNIT")
	private String defaultRcvUnit;

	/** 缺省发货单位－ 产品发货时常用的包装级别单位。 */
	@TableField("DEFAULT_SHIP_UNIT")
	private String defaultShipUnit;

	/** 打印单位－ 报表打印的缺省单位。 */
	@TableField("DEFAULT_PRINT_UNIT")
	private String defaultPrintUnit;

	/**
	 * 入/出库计费级别 －进出库费用结算时计费的等级选择，系统提供按交易、按订单行、 按订单、按天 4
	 * 种选择，主要区别是计费级别以及最低、最高费用的计算方式不同。例如按 单计费，最低费用 5 元。当每单都不满 5 元情况下，一天有 3 单，计费为
	 * 5*3=15 元；而按 天计费，合计低于 5 元，只生成一个最低费用 5 元。
	 */
	@TableField("BILL_CLASS")
	private String billClass;

	/**
	 * 库存计费级别 － 库存计费的级别选择，可按客户、产品或批次级别计算。
	 */
	@TableField("BILL_CLASS_INV")
	private String billClassInv;

	/**
	 * 入库序列号验证－收货环节的序列号验证方式。系统提供如下 4 种模式选择： ?
	 * 序列号数量与入出库数量必须一致：系统对通过扫描序列号累加获得的数量，与 待入/出库数量进行比对，2 个数量需要一致才能继续操作。 ?
	 * 跳过序列号扫描：即不进行序列号扫描采集。 ? 序列号数量覆盖入出库数量：以序列号扫描累加的数量为准。 ?
	 * 不验证序列号数量：仅采集序列号，但不予实际操作数量比对，也不使用序列号 个数的累加数量替换输入的入/出库数量
	 */
	@TableField("IN_SERIALNO_QTY_CTRL")
	private String inSerialnoQtyCtrl;

	/**
	 * 出库序列号验证－发货环节的序列号验证方式。可选模式同入库序列号验证模式： ?
	 * 序列号数量与入出库数量必须一致：系统对通过扫描序列号累加获得的数量，与 待入/出库数量进行比对，2 个数量需要一致才能继续操作。 ?
	 * 跳过序列号扫描：即不进行序列号扫描采集。 ? 序列号数量覆盖入出库数量：以序列号扫描累加的数量为准。 ?
	 * 不验证序列号数量：仅采集序列号，但不予实际操作数量比对，也不使用序列号 个数的累加数量替换输入的入/出库数量
	 */
	@TableField("OUT_SERIALNO_QTY_CTRL")
	private String outSerialnoQtyCtrl;

	/** 收货时，所收货物数量是否允许超过订单数量。 */
	@TableField("OVER_RCV")
	private Integer overRcv;

	/**
	 * 超额收货百分比 － 部分情况下，货物可超额收取的量需要控制。客户级的超额收货百
	 * 分比内容将作为产品级的超额收货百分比的默认值。使用百分比控制超额模式，货主应设置 为“允许超量”。
	 */
	@TableField("OVER_RCV_PCT")
	private BigDecimal overRcvPct;

	/**
	 * ASN 导入时自动在产品档案中创建新产品记录－导入 ASN 信息时，对于不存在的产品 信息， 自动创建新产品档案，配置项取客户档案中的默认值。
	 */
	@TableField("ASN_LOAD_SKU")
	private Integer asnLoadSku;

	/**
	 * ASN/SO 导入时自动在客户档案中创建新客户记录－导入 ASN、SO
	 * 时，如果者供应商信息未维护过，自动将不存在的客户信息写入供应商档案，配置项默认为标准。
	 */
	@TableField("ASN_LOAD_VENDOR")
	private Integer asnLoadVendor;

	/**
	 * ASN/SO 导入时自动在客户档案中创建新客户记录－导入 ASN、SO
	 * 时，如果者供应商信息未维护过，自动将不存在的客户信息写入供应商档案，配置项默认为标准。
	 */
	@TableField("ASN_LOAD_CUSTOMER")
	private Integer asnLoadCustomer;

	/** ASN 是否与 PO 关联－ 如勾选，ASN 收货后将更新对应 PO 的信息 */
	@TableField("ASN_LINK_PO")
	private Integer asnLinkPo;

	/**
	 * 生效期/失效期－ 客户许可证、批文等的有效期范围。
	 */
	@TableField("VALID_DATE_FROM")
	private Date validDateFrom;

	/** 失效期 */
	@TableField("VALID_DATE_TO")
	private Date validDateTo;

	/** 状态 */
	@TableField("STATE")
	private Integer state;

	/** 备注 */
	@TableField("COMMENTS")
	private String comments;

	/**
	 * 用户自定义字段1（库位指定方式：人工指定库位、收货时计算库位、上架时计算库位）
	 */
	@TableField("UDF1")
	private String udf1;

	/**
	 * 用户自定义字段2（批次属性名称-输出）
	 */
	@TableField("UDF2")
	private String udf2;

	/**
	 * 用户自定义字段3（缺省批次属性名称-输出）
	 */
	@TableField("UDF3")
	private String udf3;

	/**
	 * 用户自定义字段
	 */
	@TableField("UDF4")
	private String udf4;

	/**
	 * 用户自定义字段
	 */
	@TableField("UDF5")
	private String udf5;

	/** 是否启用 */
	@TableField("IS_ENABLED")
	private Integer isEnabled;

	/** 批次属性ID */
	@TableField("LOT_ATTR_ID")
	private Integer lotAttrId;

	/** 缺省批次属性－ 默认的批次属性规则，具体参考设置批次属性。将作为产品的缺省默认批次属性。 */
	@TableField("DEFAULT_LOT_ATTR")
	private Integer defaultLotAttr;

	/** 货主，客户主数据中 客户类型=货主，取客户ID */
	@TableField("OWNER")
	private Integer owner;

	/** 体积单位－计费吨结算时，明确客户所用的体积单位。 */
	@TableField("CUBIC_UNIT")
	private String cubicUnit;

	/**
	 * 重量单位－
	 * 采用计费吨方式结算时，需要比较体积、重量的大小。由于不同仓库或客户采用的重量单位可能不同，会影响计费吨的换算，因此需要明确客户所用的重量单位。
	 */
	@TableField("WEIGHT_UNIT")
	private String weightUnit;
}